package model

import (
	"time"
)

type User struct {
	ID           int64     `gorm:"primaryKey;column:id" json:"id"`
	Username     string    `gorm:"unique;size:64;not null" json:"username"` // 使用unique而不是uniqueIndex，让GORM自动处理
	PasswordHash string    `gorm:"size:256;not null" json:"-"`
	Email        *string   `gorm:"size:128" json:"email,omitempty"` // 部分唯一索引在scheme.sql中定义，GORM不管理
	CreatedAt    time.Time `json:"created_at"`
	UpdatedAt    time.Time `json:"updated_at"`
}

func (User) TableName() string {
	return "app_user"
}

// UserInfo 用户信息结构（用于请求上下文，不持久化到数据库）
type UserInfo struct {
	ID       int64
	Username string
	IsGuest  bool // true = 匿名用户
}
